// 声破天登录页面JavaScript

document.addEventListener('DOMContentLoaded', function() {
    // 获取表单元素
    const form = document.querySelector('form');
    const emailInput = document.getElementById('email');
    const passwordInput = document.getElementById('password');
    
    // 判断是登录页面还是注册页面或密码创建页面
    const isLoginPage = document.querySelector('.login-form') !== null;
    const isPasswordPage = document.querySelector('.password-form') !== null;
    
    // 创建过渡动画元素
    createTransitionOverlay();
    
    // 表单提交处理
    if (form) {
        form.addEventListener('submit', function(e) {
            e.preventDefault(); // 阻止默认提交行为
            
            if (isLoginPage) {
                // 登录页面逻辑
                if (emailInput.value.trim() === '') {
                    alert('请输入电子邮件地址或用户名');
                    return;
                }
                
                // 检查是否为有效的邮箱格式
                if (emailInput.value.includes('@') && !validateEmail(emailInput.value)) {
                    alert('请输入有效的电子邮件地址');
                    return;
                }
                
                if (passwordInput && passwordInput.value.trim() === '') {
                    alert('请输入密码');
                    return;
                }
                
                // 验证用户登录
                const success = loginUser(emailInput.value, passwordInput.value);
                
                if (success) {
                    // 显示过渡动画并跳转到主页
                    playTransitionAnimation('index.html');
                } else {
                    alert('用户名或密码错误');
                }
            } else if (isPasswordPage) {
                // 密码创建页面逻辑由password.html中的脚本处理
            } else {
                // 注册页面逻辑
                // 验证邮箱是否有效
                if (validateEmail(emailInput.value)) {
                    // 检查邮箱是否已注册
                    if (isEmailRegistered(emailInput.value)) {
                        alert('该邮箱已注册');
                        return;
                    }
                    
                    // 保存邮箱到会话存储，以便在密码创建页面使用
                    sessionStorage.setItem('registration_email', emailInput.value);
                    
                    // 跳转到密码创建页面，并传递邮箱参数
                    window.location.href = `password.html?email=${encodeURIComponent(emailInput.value)}`;
                } else {
                    // 显示错误提示
                    alert('请输入有效的电子邮件地址');
                }
            }
        });
    }
    
    // 按钮点击效果
    const buttons = document.querySelectorAll('.btn');
    buttons.forEach(button => {
        button.addEventListener('mousedown', function() {
            this.style.transform = 'scale(0.98)';
        });
        
        button.addEventListener('mouseup', function() {
            if (this.classList.contains('btn-primary')) {
                this.style.transform = 'scale(1.03)';
                setTimeout(() => {
                    this.style.transform = '';
                }, 200);
            } else {
                this.style.transform = '';
            }
        });
        
        button.addEventListener('mouseleave', function() {
            this.style.transform = '';
        });
    });
    
    // 社交登录按钮点击处理
    const socialButtons = document.querySelectorAll('.btn-social');
    socialButtons.forEach(button => {
        button.addEventListener('click', function() {
            const provider = this.classList.contains('btn-google') ? 'Google' : 
                            this.classList.contains('btn-facebook') ? 'Facebook' : 'Apple';
            
            if (isLoginPage) {
                console.log(`使用${provider}登录`);
                
                // 创建模拟社交登录用户
                const socialUser = {
                    id: generateUserId(),
                    username: `${provider}用户`,
                    email: `${provider.toLowerCase()}user@example.com`,
                    provider: provider,
                    avatar: `assets/images/avatars/default.png`,
                    createdAt: new Date().toISOString()
                };
                
                // 保存用户信息
                saveCurrentUser(socialUser);
                
                // 显示过渡动画并跳转到主页
                playTransitionAnimation('index.html');
            } else if (isPasswordPage) {
                // 密码创建页面中的社交按钮
                console.log(`使用${provider}创建账号`);
                
                // 获取注册邮箱
                const email = sessionStorage.getItem('registration_email') || 
                            new URLSearchParams(window.location.search).get('email') ||
                            `${provider.toLowerCase()}user@example.com`;
                
                // 创建社交登录用户
                const socialUser = {
                    id: generateUserId(),
                    username: email.split('@')[0],
                    email: email,
                    provider: provider,
                    avatar: `assets/images/avatars/default.png`,
                    createdAt: new Date().toISOString()
                };
                
                // 保存用户
                registerUser(socialUser);
                saveCurrentUser(socialUser);
                
                // 清理会话存储
                sessionStorage.removeItem('registration_email');
                
                // 显示过渡动画并跳转到主页
                playTransitionAnimation('index.html');
            } else {
                console.log(`使用${provider}注册`);
                
                // 创建社交注册用户
                const socialUser = {
                    id: generateUserId(),
                    username: `${provider}用户`,
                    email: `${provider.toLowerCase()}user@example.com`,
                    provider: provider,
                    avatar: `assets/images/avatars/default.png`,
                    createdAt: new Date().toISOString()
                };
                
                // 保存用户
                registerUser(socialUser);
                saveCurrentUser(socialUser);
                
                // 显示过渡动画并跳转到主页
                playTransitionAnimation('index.html');
            }
        });
    });
    
    // 如果是登录页面，添加记住我复选框效果
    if (isLoginPage) {
        const rememberCheckbox = document.getElementById('remember');
        if (rememberCheckbox) {
            // 检查本地存储中是否有记住的选项
            const remembered = localStorage.getItem('shengpotian_remember') === 'true';
            rememberCheckbox.checked = remembered;
            
            rememberCheckbox.addEventListener('change', function() {
                localStorage.setItem('shengpotian_remember', this.checked);
            });
        }
    }
    
    // 如果是密码页面，添加提交跳转逻辑
    if (isPasswordPage) {
        const passwordForm = document.getElementById('password-form');
        if (passwordForm) {
            passwordForm.addEventListener('submit', function(e) {
                e.preventDefault();
                
                // 获取密码和确认密码
                const passwordInput = document.getElementById('password');
                const confirmPasswordInput = document.getElementById('confirm-password');
                
                if (!passwordInput || !confirmPasswordInput) {
                    return;
                }
                
                // 检查密码是否匹配
                if (passwordInput.value !== confirmPasswordInput.value) {
                    alert('两次输入的密码不一致');
                    return;
                }
                
                // 获取注册邮箱
                const email = sessionStorage.getItem('registration_email') || 
                            new URLSearchParams(window.location.search).get('email');
                
                if (!email) {
                    alert('注册过程出错，请返回重试');
                    return;
                }
                
                // 创建新用户
                const newUser = {
                    id: generateUserId(),
                    username: email.split('@')[0],
                    email: email,
                    password: hashPassword(passwordInput.value), // 实际应用中应使用更安全的哈希方法
                    avatar: 'assets/images/avatars/default.png',
                    createdAt: new Date().toISOString(),
                    playlists: [],
                    favorites: []
                };
                
                // 注册用户
                registerUser(newUser);
                
                // 保存当前用户
                saveCurrentUser(newUser);
                
                // 清理会话存储
                sessionStorage.removeItem('registration_email');
                
                // 显示过渡动画并跳转到主页
                playTransitionAnimation('index.html');
            });
        }
    }
    
    // 创建测试按钮（开发时使用，稍后可以删除）
    if (window.location.search.includes('debug=true')) {
        const testButton = document.createElement('button');
        testButton.textContent = '测试过渡动画';
        testButton.style.position = 'fixed';
        testButton.style.bottom = '20px';
        testButton.style.right = '20px';
        testButton.style.zIndex = '9000';
        testButton.style.padding = '8px 16px';
        testButton.style.background = '#333';
        testButton.style.color = '#fff';
        testButton.style.border = 'none';
        testButton.style.borderRadius = '4px';
        testButton.style.cursor = 'pointer';
        
        testButton.addEventListener('click', function() {
            playTransitionAnimation('index.html');
        });
        
        document.body.appendChild(testButton);
    }
});

// 用户登录函数
function loginUser(emailOrUsername, password) {
    // 获取已注册用户
    const users = JSON.parse(localStorage.getItem('shengpotian_users') || '[]');
    
    // 查找匹配的用户
    const user = users.find(u => 
        (u.email === emailOrUsername || u.username === emailOrUsername) && 
        u.password === hashPassword(password)
    );
    
    if (user) {
        // 保存当前用户到本地存储
        saveCurrentUser(user);
        return true;
    }
    
    return false;
}

// 注册用户函数
function registerUser(user) {
    // 获取现有用户列表
    const users = JSON.parse(localStorage.getItem('shengpotian_users') || '[]');
    
    // 添加新用户
    users.push(user);
    
    // 保存回本地存储
    localStorage.setItem('shengpotian_users', JSON.stringify(users));
}

// 检查邮箱是否已注册
function isEmailRegistered(email) {
    const users = JSON.parse(localStorage.getItem('shengpotian_users') || '[]');
    return users.some(user => user.email === email);
}

// 保存当前登录用户
function saveCurrentUser(user) {
    // 移除敏感信息
    const safeUser = { ...user };
    delete safeUser.password;
    
    // 保存用户信息到两个存储位置，确保兼容性
    localStorage.setItem('shengpotian_current_user', JSON.stringify(safeUser));
    localStorage.setItem('currentUser', JSON.stringify(safeUser));
}

// 生成用户ID
function generateUserId() {
    return 'user_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);
}

// 简单的密码哈希函数(实际应用中应使用更安全的方法)
function hashPassword(password) {
    let hash = 0;
    for (let i = 0; i < password.length; i++) {
        const char = password.charCodeAt(i);
        hash = ((hash << 5) - hash) + char;
        hash = hash & hash;
    }
    return hash.toString(16);
}

// 创建过渡动画覆盖层
function createTransitionOverlay() {
    const overlay = document.createElement('div');
    overlay.className = 'transition-overlay';
    overlay.style.position = 'fixed';
    overlay.style.top = '0';
    overlay.style.left = '0';
    overlay.style.width = '100%';
    overlay.style.height = '100%';
    overlay.style.backgroundColor = '#121212';
    overlay.style.zIndex = '9999';
    overlay.style.opacity = '0';
    overlay.style.pointerEvents = 'none';
    overlay.style.transition = 'opacity 0.5s ease';
    
    document.body.appendChild(overlay);
}

// 播放过渡动画并跳转
function playTransitionAnimation(targetUrl) {
    const overlay = document.querySelector('.transition-overlay');
    if (!overlay) return;
    
    overlay.style.opacity = '1';
    overlay.style.pointerEvents = 'auto';
    
    setTimeout(() => {
        window.location.href = targetUrl;
    }, 500);
}

// 邮箱验证函数
function validateEmail(email) {
    const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(String(email).toLowerCase());
}